    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(Object obj) {
        if (obj == null) { return false; }
        if (obj == this) { return true; }     
        if (obj.getClass() != getClass()) {
          return false;
        }        
        ${pojo.getDeclarationName()} rhs = (${pojo.getDeclarationName()}) obj;

        return new ${pojo.importType("org.apache.commons.lang.builder.EqualsBuilder")}()
        <#foreach property in pojo.getAllPropertiesIterator()><#if pojo.hasIdentifierProperty()><#if property.equals(clazz.identifierProperty)>.append(${pojo.getGetterSignature(property)}(), rhs.${pojo.getGetterSignature(property)}())</#if><#else>.append(${pojo.getGetterSignature(property)}(), rhs.${pojo.getGetterSignature(property)}())</#if></#foreach>.isEquals();
    }
    
    /**
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
         return new ${pojo.importType("org.apache.commons.lang.builder.HashCodeBuilder")}(17, 37)
         <#foreach property in pojo.getAllPropertiesIterator()><#if pojo.hasIdentifierProperty()><#if property.equals(clazz.identifierProperty)>.append(${pojo.getGetterSignature(property)}())</#if><#else>.append(${pojo.getGetterSignature(property)}())</#if></#foreach>.toHashCode();
    }
